import json

from devicetest.api import Asserts
from devicetest.aw.OpenHarmony import CommonOH
from devicetest.core.test_case import TestCase, Step

from aw.common import common_setup, common_teardown
from aw.pom import Memorandum


class PreTest_RK3568_Tooling_Memorandum_0500(TestCase, Memorandum):
    # 预置条件：
    # 烧写目标版本后，正常进入桌面
    # 测试步骤：
    # 1、进入桌面，点击备忘录应用
    # 2、点击收缩文件夹查看界面布局
    # 预期结果：
    # 1、可正常进入备忘录
    # 2、界面从上至下依次显示为：收缩键、笔记、新建按钮、全部笔记、未分类、已分类(个人、生活、工作...及新建的文件夹名称)、我的收藏、最近删除

    def __init__(self, controllers):
        self.TAG = self.__class__.__name__
        TestCase.__init__(self, self.TAG, controllers)

    def setup(self):
        common_setup(self.Phone1)

    def process(self):
        Step('步骤1：进入桌面-备忘录应用')
        CommonOH.startAbility(self.Phone1, self.ability_name, self.bundle_name)
        CommonOH.wait(self.Phone1, 1)
        # (70,128)为收缩文件夹的坐标
        Step('预期结果1：可正常进入备忘录')
        CommonOH.checkIfTextExist(self.Phone1, '全部笔记')

        Step('步骤2：点击收缩文件夹查看界面布局')
        # (72,128)为收缩文件夹的坐标
        CommonOH.click(self.Phone1, **self.open_menu)
        # 点击新建文件夹的输入框
        Step('预期结果2：界面从上至下依次显示为：收缩键、笔记、新建按钮、全部笔记、未分类、已分类(个人、生活、工作...及新建的文件夹名称)、我的收藏、最近删除')
        bj_bounds = json.loads(CommonOH.getWidgetProperties(self.Phone1, '笔记'))['bounds']
        # 比较笔记的顶点Y坐标和收缩的中心坐标
        Asserts.assert_greater(bj_bounds['topY'], self.close_menu['y'])
        xj_bounds = json.loads(CommonOH.getWidgetProperties(self.Phone1, '新建'))['bounds']
        Asserts.assert_greater(xj_bounds['leftX'], bj_bounds['rightX'])
        qbbj_bounds = json.loads(CommonOH.getWidgetProperties(self.Phone1, '全部笔记', index=1))['bounds']
        # 比较下方的控件顶点Y坐标和上一个控件的底部的Y坐标
        Asserts.assert_greater(qbbj_bounds['topY'], xj_bounds['bottomY'])
        wfl_bounds = json.loads(CommonOH.getWidgetProperties(self.Phone1, '未分类'))['bounds']
        Asserts.assert_greater(wfl_bounds['topY'], qbbj_bounds['bottomY'])
        gr_bounds = json.loads(CommonOH.getWidgetProperties(self.Phone1, '个人'))['bounds']
        Asserts.assert_greater(gr_bounds['topY'], wfl_bounds['bottomY'])
        wdsc_bounds = json.loads(CommonOH.getWidgetProperties(self.Phone1, '我的收藏'))['bounds']
        Asserts.assert_greater(wdsc_bounds['topY'], gr_bounds['bottomY'])
        zjsc_bounds = json.loads(CommonOH.getWidgetProperties(self.Phone1, '最近删除'))['bounds']
        Asserts.assert_greater(zjsc_bounds['topY'], wdsc_bounds['bottomY'])

    def teardown(self):
        common_teardown(self.Phone1, self.bundle_name)
